import { QdrantClient } from "@qdrant/js-client-rest";

// 确保使用正确的协议（https 如果启用了 TLS）
const client = new QdrantClient({
  url: "http://192.168.0.91:56333", // 使用 url 而不是 host + port，更清晰
  apiKey: "axUut0X8Mws7DBND1MWvYO7G",
  // 或者使用: apiKey: process.env.QDRANT_API_KEY,
  checkCompatibility: false,
});

/**
 * 获取所有集合
 * https://api.qdrant.tech/api-reference/collections/get-collections
 * @returns {Promise<any>} 包含所有集合信息的 Promise
 */
export async function getCollectionsAPI() {
  try {
    const res = await client.getCollections();
    console.log("getCollectionsAPI>>>>", res);
    return res;
  } catch (error) {
    console.error("Error fetching collections:", error);
    throw error; // 向上抛出错误以便调用者处理
  }
}

/**
 * 检查集合是否存在
 * https://api.qdrant.tech/api-reference/collections/collection-exists
 * @param {string} collectionName - 集合名称
 * @returns {Promise<boolean>} 集合是否存在的 Promise
 */
export async function collectionExistsAPI(collectionName: string) {
  try {
    const res = await client.collectionExists(collectionName);
    console.log("collectionExistsAPI>>>>", res);
    return res;
  } catch (error) {
    console.error("Error checking collection existence:", error);
    throw error; // 向上抛出错误以便调用者处理
  }
}

/**
 * 更新集合配置
 * https://api.qdrant.tech/api-reference/collections/update-collection
 * @param {string} collectionName - 集合名称
 * @param {any} config - 集合配置
 * @returns {Promise<any>} 更新集合配置的 Promise
 */
export async function updateCollectionAPI(collectionName: string) {
  try {
    const res = await client.updateCollection(collectionName, {
      optimizers_config: {
        indexing_threshold: 10000,
      },
    });
    console.log("updateCollectionAPI>>>>", res);
    return res;
  } catch (error) {
    console.error("Error updating collection:", error);
    throw error; // 向上抛出错误以便调用者处理
  }
}

/**
 * 删除集合
 * https://api.qdrant.tech/api-reference/collections/delete-collection
 * @param {string} collectionName - 集合名称
 * @returns {Promise<any>} 删除集合的 Promise
 */
export async function deleteCollectionAPI(collectionName: string) {
  try {
    const res = await client.deleteCollection(collectionName);
    console.log("deleteCollectionAPI>>>>", res);
    return res;
  } catch (error) {
    console.error("Error deleting collection:", error);
    throw error; // 向上抛出错误以便调用者处理
  }
}

/**
 * 创建集合
 * https://api.qdrant.tech/api-reference/collections/create-collection
 * @param {string} collectionName - 集合名称
 * @param {any} config - 集合配置
 * @returns {Promise<any>} 创建集合的 Promise
 */
export async function createCollectionAPI(collectionName: string) {
  try {
    const res = await client.createCollection(collectionName, {
      vectors: { size: 100, distance: "Cosine" },
    });
    console.log("createCollectionAPI>>>>", res);
    return res;
  } catch (error) {
    console.error("Error creating collection:", error);
    throw error; // 向上抛出错误以便调用者处理
  }
}

/**
 * 获取集合详情
 * https://api.qdrant.tech/api-reference/collections/get-collection
 * @param {string} collectionName - 集合名称
 * @returns {Promise<any>} 包含集合详情的 Promise
 */
export async function getCollectionDetailAPI(collectionName: string) {
  try {
    const res = await client.getCollection(collectionName);
    console.log("getCollectionDetailAPI>>>>", res);
    return res;
  } catch (error) {
    console.error("Error fetching collection detail:", error);
    throw error; // 向上抛出错误以便调用者处理`
  }
}
